package gdut.imis.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import gdut.imis.Utils.Result;
import gdut.imis.domain.University;
import gdut.imis.enums.Status;
import gdut.imis.mapper.UniversityMapper;
import gdut.imis.service.UniversityService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.Objects;

/**
 * @Description 大学serviceimpl
 * @Author JiaFu
 * @Date 2023/4/7 8:55
 */
@Service
@RequiredArgsConstructor
public class UniversityServiceImpl extends ServiceImpl<UniversityMapper, University> implements UniversityService {
    /***
     * 根据大学id查询大学信息
     * @param: id
     * @return Result
     */
    @Override
    public Result getUniversityById(Long id) {
        University university = this.getById(id);
        if (Objects.isNull(university)) {
            return Result.errorWithArgs(Status.FAILED, "没有查询到该大学信息");
        }
        return Result.success(university);
    }

    /***
     * 分页查询所有大学（一级管理员才有的权限）
     * @param: pageNo
     * @param: pageSize
     * @return Result
     */
    @Override
    public Result getPageUniversity(Integer pageNo, Integer pageSize) {
        Page<University> page = new Page<>();
        page.setCurrent(pageNo);
        page.setSize(pageSize);
        Page<University> resPage = this.page(page);
        if (resPage != null && resPage.getTotal() > 0) {
            return Result.success(resPage);
        }
        return Result.errorWithArgs(Status.FAILED, "没有查询到任何大学信息");
    }

    /***
     * 新增一个大学（一级管理员才有的权限）
     * @param: university
     * @return Result
     */
    @Override
    public Result addUniversity(University university) {
        if (Objects.isNull(university)) {
            return Result.errorWithArgs(Status.REQUEST_PARAMS_NOT_VALID_ERROR, "university");
        }
        boolean flag = this.save(university);
        if (flag) {
            return Result.success();
        }
        return Result.errorWithArgs(Status.FAILED, "新增大学失败");
    }

    /***
     * 根据大学id删除大学（一级管理员才有的权限）
     * @param: id
     * @return Result
     */
    @Override
    public Result deleteUniversityById(Long id) {
        boolean flag = this.removeById(id);
        if (flag) {
            return Result.success();
        }
        return Result.errorWithArgs(Status.FAILED, "删除大学失败");
    }
}
